# -*- coding: utf-8 -*-
"""Обработчики различных типов полей,
которые могут быть обнаружены при манипуляциях с моделью.
"""

from autoadmin.lib.util import LoggerHandler, ModelWrapper
from autoadmin.lib.field import FormField

from webhelpers import form_options, select

from alchemistkit.forms import SelectOptionsFromObject

def column(value, field):
    """Обработчик обычного поля sqlalchemy.schema.Column
    """
    body = "<input name='%s' type='text' value='%s'>" % (field.name, value or '')
    return FormField(field.name, body)

def model(model_object, args=None):
    """Обработчик поля, являющегося ссылкой (FK) на другую модель.
    """
    model = ModelWrapper(model_object)

    options_container = SelectOptionsFromObject(model.objects, name_in=None)
    options = form_options.options_for_select(options_container, selected=model_object.id)

    return FormField(model.name, select(model.name, options), '', str(model_object.id) or '')
